Programmable logic devices (PLDs) are a well-known type of integrated circuit that can be programmed to perform specified logic functions. One type of PLD, the field programmable gate array (FPGA), typically includes an array of programmable tiles. These programmable tiles can include, for example, input/output blocks (IOBs), configurable logic blocks (CLBs), dedicated random access memory blocks (BRAM), multipliers, digital signal processing blocks (DSPs), processors, clock managers, delay lock loops (DLLs), and so forth.
Each programmable tile typically includes both programmable interconnect and programmable logic. The programmable interconnect typically includes a large number of interconnect lines of varying lengths interconnected by programmable interconnect points (PIPs). The programmable logic implements the logic of a user design using programmable elements that can include, for example, function generators, registers, arithmetic logic, and so forth.
The programmable interconnect and programmable logic are typically programmed by loading a stream of configuration data into internal configuration memory cells that define how the programmable elements are configured. The configuration data can be read from memory (e.g., from an external PROM) or written into the FPGA by an external device. The collective states of the individual memory cells then determine the function of the FPGA.
Another type of PLD is the Complex Programmable Logic Device, or CPLD. A CPLD includes two or more “function blocks” connected together and to input/output (I/O) resources by an interconnect switch matrix. Each function block of the CPLD includes a two-level AND/OR structure similar to those used in Programmable Logic Arrays (PLAs) and Programmable Array Logic (PAL) devices. In some CPLDs, configuration data is stored on-chip in non-volatile memory. In other CPLDs, configuration data is stored on-chip in non-volatile memory, then downloaded to volatile memory as part of an initial configuration sequence.
For all of these programmable logic devices (PLDs), the functionality of the device is controlled by data bits provided to the device for that purpose. The data bits can be stored in volatile memory (e.g., static memory cells, as in FPGAs and some CPLDs), in non-volatile memory (e.g., FLASH memory, as in some CPLDs), or in any other type of memory cell.
Other PLDs are programmed by applying a processing layer, such as a metal layer, that programmably interconnects the various elements on the device. These PLDs are known as mask programmable devices. PLDs can also be implemented in other ways, e.g., using fuse or antifuse technology. The terms “PLD” and “programmable logic device” include but are not limited to these exemplary devices, as well as encompassing devices that are only partially programmable.
ICs have been electrically connected to their packages using wire bonds. Automatic bonding machines are available to quickly and reliably stitch very fine metal wire from bonding pads on the IC to bonding pads on the package base. The bonding pads are usually located on or near the perimeter of the IC to avoid crossing one wire bond with another. While this approach has worked very well for many ICs, including CPLDs, alternative packaging techniques have been developed.
Another type of packing technique is commonly referred to as “flip-chip” bonding. One advantage of flip-chip packaging techniques over wire-bond packaging techniques is that the solder bumps on the IC are not limited to its perimeter. Small solder bumps are formed on the top of the IC in lieu of wire bonding pads. Corresponding bump lands are on the top surface of the base of a package. The IC is flipped over and aligned so that the solder bumps match the bump lands. The assembly is then heated to re-flow the solder bumps, which electrically and mechanically attach the flip-chip IC to the base of the package. Encapsulant or a cover is optionally placed over the IC.
The base of the package typically has metal traces that electrically connect the solder targets on the top of the base with contacts on the bottom of the base. In some applications, the traces essentially “spread out” the spacing between the solder targets on the top to another set of solder bumps or pins on the bottom of the package base. This is done to accommodate the generally higher critical dimension (i.e. minimum spacing) of the printed wiring board that the packaged IC is assembled on. In other words, the processes and materials used to fabricate the package base reliably produce more closely spaced solder targets and metal traces than the processes and materials used to fabricate the printed wiring board.
With high-speed ICs, which are generally ICs operating at a clock rate of 600 MHz or higher, reflections arising from impedance mismatches becomes an important consideration in the design of a packaged IC. Such ICs may include multi-gigabit transceivers (“MGTs”) handling signals at 1.5 GHz and up. These signals are typically brought through a package to the IC on high-speed traces. For high-speed traces, it is generally desirable to maintain a characteristic impedance (e.g. 50 ohms) from the printed wiring board through the package into the receiving IC, and that the receiving IC provide a termination having the characteristic impedance. The package base is often a multi-layer structure with at least two layers of metallization. Planar transmission line structures having the characteristic impedance are formed in the base of the package to minimize reflections that can otherwise corrupt data transfer. However, reflections due to poor return loss occur if the IC does not provide a good termination.
Therefore, a flip-chip package that provides low return loss with an IC that does not provide a good termination is desirable.